package Day02;

import java.util.Scanner;

/**
 * 差分
 * 用于场景：对于一个int[] arr数组中，需要在[l,r]区间内的每个数字加上一个c
 * 先构造出 arr数组的 差分数组
 * 然后针对 针对arr数组的[l,r]的每个数 + c的操作
 * 就相当于是 针对 差分数组的操作， b[l] = b[l]+c ; b[r+1] = b[r+1]-1
 * 最后在求 差分数组的 前缀和数组，就是得到最终结果
 */
public class Difference {

    public static void insert(int[] arr, int l, int r, int c) {
        arr[l] += c;
        arr[r + 1] -= c;
    }

    public static void main(String[] args) {
        int[] arr = new int[Common.N];
        int[] b = new int[Common.N];
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        // 输入原始数组
        for (int i = 1; i <= n; i++) {
            arr[i] = scanner.nextInt();
        }
        // 构造差分数组
        // 此处相当于是 原始数组arr每个位置上的值为0  + arr[i]
        for (int i = 1; i <= n; i++) {
            insert(b,i,i,arr[i]);
        }
        // 此时直接在差分数组上进行操作
        while (m!=0){
            int l = scanner.nextInt();
            int r = scanner.nextInt();
            int c = scanner.nextInt();
            insert(b,l,r,c);
            m--;
        }
        // 将差分数组转换为 前缀和数组得到结果
        for (int i = 1; i <=n ; i++) {
            b[i] = b[i] + b[i-1];
        }
        // 打印出最后结果
        for (int i = 1; i <=n ; i++) {
            System.out.printf("%d",b[i]);
        }
    }
}
